This section is intended to introduce various aspects of the art, which may be associated with aspects of the disclosed techniques and methodologies. A list of references is provided at the end of this section and may be referred to hereinafter. This discussion, including the references, is believed to assist in providing a framework to facilitate a better understanding of particular aspects of the disclosure. Accordingly, this section should be read in this light and not necessarily as admissions of prior art.
One function of computer programs is to modify or create new data based on algorithms. Computer program data integration involves moving data from one computer program into another computer program. In its simplest form, this involves copying data from one computer program into another computer program manually via the computer's internal clipboard. This operation may be known as “copy and paste”. To copy and paste data, a person manually selects the data to be copied from a first computer program, instructs the computer to copy the data, opens up a second computer program, and manually pastes the copied data into the second program. Manually copying and pasting data between computer programs is time-consuming and error-prone. Additionally, it often involves manually reformatting the data before being pasted into the second computer program. Sometimes data sets are too large to fit inside the computer's internal clipboard, and the copy and paste operation isn't even feasible.
Another form of data integration exports and/or imports a data file. Some computer programs can export data into a file. A person selects the data to be exported from a first computer program and manually instructs the first computer program to export the data into a file. The person goes to the second computer program and instructs the second computer program to import the file. This type of integration requires that the computer programs understand each other's data formats, or in other words, the computer programs must have data formats compatible with each other.
A computer program may be designed to store data in a specific data format to optimize execution speed or to comply with the purposes of the program itself. Typically data formats are designed to represent concrete world objects or concepts, either of which may be known as data objects. In practice, computer programs that are designed to work together may share similar types of data objects. For example, two different computer programs for managing a company payroll are shown in FIG. 1. The first computer program A includes an employee data set 12 that has three data objects 13, 14, 15 representing an employee's name, address, and phone number, respectively. The second computer program B includes an employee data set 16 that has four data objects 17a, 17b, 18, 19 representing an employee's first name, last name, address, and phone number, respectively. Although the data objects in the two computer programs are similar, the first computer program will most likely store data relating to its data objects in a different binary code format and organization than the second computer program. Therefore, directly integrating data between the two computer programs may be problematic.
One solution might be to modify the computer application associated with each computer program to understand another computer program's data format. For example, if the computer application associated with second computer program B was open source, the computer application could be modified to understand first computer program A's data format, thereby enabling communication between the two computer programs. Such modification is called a data format adapter, and is shown in FIG. 2 at reference number 22. Another data format adapter 24 would be required for first computer program A to understand second computer program B's data format. Data format adapters would be required for every data object the first and second computer programs might share. Creating unique data format adapters for each computer program's native data format is inflexible to change. Occasionally computer programs change their data formats, and other programs then would need to upgrade their data format adapters to respond to the format change. The problem gets more complicated when data from more than two computer programs are desired to be integrated. For integrating data from two computer programs would require two data format adapters, but integrating data from four computer programs having different data formats would require twelve data format adapters. In an environment with N computer programs, N(N−1) data format adapters are required for full data integration. Creating even a single data format adapter for a computer program for a set of domain objects represents a nontrivial amount of work for a computer programmer. The updating process itself can be a time-consuming and labor-intensive task. Furthermore, creating and updating data format adapters may be hampered significantly if the computer application associated with any of the computer programs is closed source.
A less common type of computer program integration involves executing computer algorithms in an ordered sequence. For example, adding two variables X and Y together is a very simple algorithm that may be called ‘Add2Numbers’ and reside in computer program A. Computer program B could have an algorithm called ‘SquareANumber’ that takes a number and squares it (n^2). It may be desired to run ‘Add2Numbers’ and then run ‘SquareANumber’. This may require a user to first manually interact with computer program A and then with computer program B. In a more automated and integrated environment, ‘Add2Numbers’ and ‘SquareANumber’ could be executed sequentially with no manual interaction. This type of real-time computer program integration is helpful in automating how several computer programs should interact together in real-time as they execute. Combining algorithmic integration with data integration can truly integrate the capabilities of several programs at once. However, the challenges of potentially different data formats may remain. What is needed is a way to enable computer programs to easily share and manipulate data with a minimum amount of modification.